package com.gengzp.permission.tools;

import jakarta.annotation.PostConstruct;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

/**
 * @ClassName PermissionEnvironmentVariableReaderImpl
 * @Description 权限认证框架环境变量读取器实现类
 * @Author gengzp
 * @Date 2025/8/14 0:41
 */
@Component
public class PermissionEnvironmentVariableReader {

    /**
     * redis地址
     */
    @Value("${spring.data.redis.host}")
    private String redisHost;

    /**
     * redis端口
     */
    @Value("${spring.data.redis.port}")
    private int redisPort;

    /**
     * redis连接密码
     */
    @Value("${spring.data.redis.password}")
    private String redisPassword;

    /**
     * redis连接超时时间
     */
    @Value("${spring.data.redis.timeout}")
    private Long redisTimeout;

    /**
     * 权限框架使用的redis数据库编号
     */
    @Value("${permission.redis.database}")
    private int redisPermissionDatabase;

    /**
     * token 有效时间 (单位: 秒)
     */
    @Value("${permission.token-duration}")
    private Long tokenDuration;

    /**
     * 超级管理员 id
     */
    @Value("${permission.super-admin-id}")
    private String superAdminId;

    /**
     * 超级管理员账号
     */
    @Value("${permission.super-admin-account}")
    private String superAdminAccount;

    /**
     * 超级管理员昵称
     */
    @Value("${permission.super-admin-nickname}")
    private String superAdminNickname;

    /**
     * 超级管理员密码
     */
    @Value("${permission.super-admin-password}")
    private String superAdminPassword;

    /**
     * 超级管理员加密盐值
     */
    @Value("${permission.super-admin-salt}")
    private String superAdminSalt;

    private static PermissionEnvironmentVariableReader permissionEnvironmentVariableReaderInstance;

    private PermissionEnvironmentVariableReader() {
    }

    @PostConstruct
    public void init() {
        permissionEnvironmentVariableReaderInstance = this;
    }

    /**
     * 获取redis连接地址
     *
     * @return redis连接地址
     */
    public static String getRedisHost() {
        return permissionEnvironmentVariableReaderInstance.redisHost;
    }

    /**
     * 获取redis服务端口
     *
     * @return redis服务端口
     */
    public static int getRedisPort() {
        return permissionEnvironmentVariableReaderInstance.redisPort;
    }

    /**
     * 获取redis连接密码
     *
     * @return redis连接密码
     */
    public static String getRedisPassword() {
        return permissionEnvironmentVariableReaderInstance.redisPassword;
    }

    /**
     * 获取redis使用的数据库编码
     *
     * @return redis使用的数据库编码
     */
    public static int getRedisDatabase() {
        return permissionEnvironmentVariableReaderInstance.redisPermissionDatabase;
    }

    /**
     * 获取redis连接超时时间
     *
     * @return redis连接超时时间
     */
    public static Long getRedisTimeout() {
        return permissionEnvironmentVariableReaderInstance.redisTimeout;
    }

    /**
     * 获取超级管理员的用户id
     *
     * @return 超级管理员的用户id
     */
    public static String getSuperAdminUserId() {
        return permissionEnvironmentVariableReaderInstance.superAdminId;
    }

    /**
     * 获取token过期时间
     *
     * @return token过期时间
     */
    public static Long getTokenDuration() {
        return permissionEnvironmentVariableReaderInstance.tokenDuration;
    }

    /**
     * 获取超级管理员的用户账号
     *
     * @return 账号
     */
    public static String getSuperAdminUserAccount() {
        return permissionEnvironmentVariableReaderInstance.superAdminAccount;
    }

    /**
     * 获取超级管理员的昵称
     *
     * @return 昵称
     */
    public static String getSuperAdminUserNickname() {
        return permissionEnvironmentVariableReaderInstance.superAdminNickname;
    }

    /**
     * 获取超级管理员的用户密码
     *
     * @return 密码
     */
    public static String getSuperAdminUserPassword() {
        return permissionEnvironmentVariableReaderInstance.superAdminPassword;
    }

    /**
     * 获取超级管理员的用户密码加密盐值
     *
     * @return 加密盐值
     */
    public static String getSuperAdminUserSalt() {
        return permissionEnvironmentVariableReaderInstance.superAdminSalt;
    }

}
